﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TsTreeTimeSeries.node
{
    class Seperator
    {
        public List<char> SeperatorInfo; // danh sach thong tin 

        public Seperator()
        {
            SeperatorInfo = new List<char>();
        
        }

        public Seperator(char[] l)
        {
            SeperatorInfo = new List<char>();
            foreach (char c in l)
            {
                this.SeperatorInfo.Add(c);
            }
        }
        //public Seperator(List<float> left, List<float> right)
        //{
        //    leftTree = new List<float>();
        //    rightTree = new List<float>();

        //    for (int i = 0; i < left.Count; i++)
        //    {
        //        leftTree.Add(left[i]);
        //        rightTree.Add(right[i]);
        //    }
        //}

        //public void Quantization(int max, int min , char[] symbols)
        //{
        //    int k = (max - min) / symbols.Length;
        //    for (int i = 0; i < SeperatorValue.Count; i++)
        //    {

        //        for (int j = 1; j <= symbols.Length; j++)
        //        {
        //            if (SeperatorValue[i] >= k * j && SeperatorValue[i] <= k * (j + 1)) { SeperatorInfo.Add(symbols[i]); break; }
        //        }

        //    }
        //}

        //public void QuantizationLeft(int max, int min, char[] symbols)
        //{
        //    int k = (max - min) / symbols.Length;
        //    for (int i = 0; i < leftTree.Count; i++)
        //    {

        //        for (int j = 1; j <= symbols.Length; j++)
        //        {
        //            if (leftTree[i] >= k * j && leftTree[i] <= k * (j + 1)) { leftTreeInfo.Add(symbols[i]); break; }
        //        }

        //    }
        //}

        //public void QuantizationRight(int max, int min, char[] symbols)
        //{
        //    int k = (max - min) / symbols.Length;
        //    for (int i = 0; i < rightTree.Count; i++)
        //    {

        //        for (int j = 1; j <= symbols.Length; j++)
        //        {
        //            if (rightTree[i] >= k * j && rightTree[i] <= k * (j + 1)) { rightTreeInfo.Add(symbols[i]); break; }
        //        }

        //    }
        //}

        //// return true neu l1 <= l2, otherwise
        //internal bool Smaller(List<char> l1, List<char> l2)
        //{
        //    // |a| ≤ |b| ∧ ∀i ∈ {1, . . . , |a|} : ai = bi 
        //    if (l1.Count <= l2.Count)
        //    {
        //        bool flag = true;
        //        for (int i = 0; i < l1.Count; i++)
        //        {
        //            if (l1[i] != l2[i]) flag = false;
        //        }
        //        if (flag) return true;
        //    }
        //    //∃j ≤ min{|a|, |b|} ∀i ∈ {1, . . . , j − 1} : ai = bi ∧ aj < bj 
        //    for (int i = 0; i < Math.Min(l1.Count, l2.Count); i++)
        //    {
        //        for (int j = 0; j <= i - 1; j++)
        //        {
        //            if (l1[j] == l2[j] && l1[i] < l2[i]) return true;
        //        }
        //    }

        //    return false;
        //}

        //// return true neu l1 >= l2, otherwise
        //internal bool Bigger(List<char> l1, List<char> l2)
        //{
        //    // |a| ≤ |b| ∧ ∀i ∈ {1, . . . , |a|} : ai = bi 
        //    if (l1.Count <= l2.Count)
        //    {
        //        bool flag = true;
        //        for (int i = 0; i < l1.Count; i++)
        //        {
        //            if (l1[i] != l2[i]) flag = false;
        //        }
        //        if (flag) return true;
        //    }
        //    //∃j ≤ min{|a|, |b|} ∀i ∈ {1, . . . , j − 1} : ai = bi ∧ aj < bj 
        //    for (int i = 0; i < Math.Min(l1.Count, l2.Count); i++)
        //    {
        //        for (int j = 0; j <= i - 1; j++)
        //        {
        //            if (l1[j] == l2[j] && l1[i] > l2[i]) return true;
        //        }
        //    }

        //    return false;
        //}
        //public void FindSeperator()
        //{
        //    for (int i = 0; i < leftTreeInfo.Count; i++)
        //    {
        //        if (Smaller(leftTreeInfo.GetRange(0, i), rightTreeInfo))
        //        {
        //            SeperatorInfo = new List<char>(leftTreeInfo.GetRange(0, i));
        //        }
        //    }
        //}
    }
}
